#ifndef _FFACTORY_H_
#define _FFACTORY_H_

namespace Font
{

	class Texture;
	class TextDisplay;
	class Family;

	class Factory
	{
	
	public:
	
		Factory(Library* a_Library);
		virtual ~Factory();

		Library* GetLibrary();

		virtual Texture* CreateTexture(unsigned int a_Width, unsigned int a_Height, const unsigned char* a_Data) = 0;
		virtual Texture* LoadTexture(const tb::String& a_Path) = 0;

		virtual TextDisplay* CreateTextDisplay(unsigned int a_GlyphCount) = 0;

	protected:

		Library* m_Library;
	
	}; // class Factory

}; // namespace Font
	
#endif